package com.builder;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import com.model.ActualizacionTarifario;
import com.view.ActualizacionTarifarioView;
import com.view.FamiliaView;
import com.view.ProductoView;

@ManagedBean
@ViewScoped
@SuppressWarnings("serial")
public class ActualizacionTarifarioBuilder extends
		BaseBuilder<ActualizacionTarifarioView, ActualizacionTarifario> {

	@ManagedProperty("#{familiaBuilder}")
	private FamiliaBuilder familiaBuilder;

	@ManagedProperty("#{productoBuilder}")
	private ProductoBuilder productoBuilder;

	@Override
	public ActualizacionTarifario toDomain(ActualizacionTarifarioView view) {
		return new ActualizacionTarifario(view.getId(),
				view.getTipoActualizacion(), view.getValor(),
				view.getFamilia() == null ? null : familiaBuilder.toDomain(view
						.getFamilia()), view.getProducto() == null ? null
						: productoBuilder.toDomain(view.getProducto()),
				view.getTarifarioFuturos(), view.getFecha(),
				view.getTipoTarifario());

	}

	@Override
	public ActualizacionTarifarioView toView(ActualizacionTarifario model) {

		return new ActualizacionTarifarioView(model.getID(),
				model.getTipoActualizacion(), model.getValor(),
				model.getFamilia() == null ? new FamiliaView() : familiaBuilder
						.toView(model.getFamilia()),
				model.getProducto() == null ? new ProductoView()
						: productoBuilder.toView(model.getProducto()),
				model.getTarifarioFuturos(), model.getFecha(),
				model.getTipoTarifario());
	}

	public FamiliaBuilder getFamiliaBuilder() {
		return familiaBuilder;
	}

	public void setFamiliaBuilder(FamiliaBuilder familiaBuilder) {
		this.familiaBuilder = familiaBuilder;
	}

	public ProductoBuilder getProductoBuilder() {
		return productoBuilder;
	}

	public void setProductoBuilder(ProductoBuilder productoBuilder) {
		this.productoBuilder = productoBuilder;
	}

}
